package com.gk.panda.apis.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gk.panda.apis.Vo.RealtimeShootListVo;
import com.gk.panda.apis.entity.TransectManager.vo.EquipmentPointVo;
import com.gk.panda.apis.entity.largeScreen.dto.PatrolInfoDto;
import com.gk.panda.apis.entity.largeScreen.dto.PatrolListDto;
import com.gk.panda.apis.entity.largeScreen.vo.AreaPatrolInfo;
import com.gk.panda.apis.entity.largeScreen.vo.EcologicalEqVo;
import com.gk.panda.apis.entity.largeScreen.vo.PersonCountHistoryDataVo;
import com.gk.panda.pojo.RealtimeShoot;
import com.gk.panda.pojo.patrol.dto.DetailListDTO;
import com.gk.panda.pojo.patrol.entity.PatrolEntity;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface LargeScreenService {

    /**
     * 大屏根据机构id获取抓拍和巡护事件
     * @param orgId
     * @param pageSize
     * @param includePatrol
     * @return
     */
    List<RealtimeShoot> getEventByOrgId(Integer orgId,Integer pageSize,Integer includePatrol);

    /**
     * 大屏根据设备编号获取抓拍和事件
     * @param deviceSn
     * @param pageSize
     * @return
     */
    Page<RealtimeShootListVo> getEventByDeviceSn(String deviceSn, Integer pageSize, Integer pageNumber);

    /**
     * 大屏获取生态设备信息
     * @return
     */
    EcologicalEqVo getEcologicalEquipment();

    /**
     * 大屏获取巡护统计
     * @param dto
     * @return
     */
    List<AreaPatrolInfo> getPatrolInfo(PatrolInfoDto dto);

    /**
     * 大屏根据巡护事件编号获取对应巡护信息
     * @param reportNum
     * @return
     */
    DetailListDTO getPatrolInfoByReportNum(String reportNum);

    /**
     * 大屏根据设备编号获取设备点位详情
     * @param deviceSn
     * @return
     */
    EquipmentPointVo getEquipmentPointBySn(String deviceSn);

    /**
     * 大屏通过机构和巡护方式获取巡护记录
     * @param dto
     * @return
     */
    List<PatrolEntity> getPatrolList(PatrolListDto dto);

    /**
     * 大屏获取实时直播视频地址列表
     * @return
     */
    List<String> getLiveVideo();

    /**
     * 大屏获取人次统计历史数据
     * @param startTime
     * @param endTime
     * @return
     */
    List<PersonCountHistoryDataVo> getPersonCountHistoryData(String startTime, String endTime);

    /**
     * 大屏获取手持终端个数
     * @return
     */
    Long getDeviceHandheldTerminalCount();

    /**
     * 大屏导出区域人数统计历史数据
     * @param startTime
     * @param endTime
     * @param response
     */
    void exportAreaUserCount(String startTime, String endTime, HttpServletResponse response);
}
